﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using Autofac;
using BasicCMS.Logging;
using BasicCMS.Mvc.ViewEngine;
using Autofac.Integration.Mvc;
using BasicCMS.Modules;
using BasicCMS.Core.Filters;


namespace BasicCMS.Web
{
    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明，
    // 请访问 http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            ContainerBuilder builder = new ContainerBuilder();
            var assemblies = Util.LoadAppAssemblies();
            builder.RegisterAssmelbies(assemblies);
            builder.RegisterControllers(Util.LoadAppAssemblies());
            IContainer container = builder.Build();
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
            ObjectContainer.SetContainer(container);

            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new BasicCMSViewEngine());

            GlobalFilters.Filters.Add(new AuthrizationFilter());

            ObjectContainer.ResolveServices<IModule>().ForEach(m =>
            {
                m.Initialize();
                m.RegisterRoutes();
                m.RegisterFilters(GlobalFilters.Filters);
                m.RegisterModelBinders(ModelBinders.Binders);
            });

        }
    }
}